#!/usr/bin/perl

use strict;
use XML::RPC;
use Data::Dumper;

use constant XMLRPC => 'http://localhost:8080/exist/xmlrpc';

sub crea_nodo {
  my $nombre;
  my $contenido;
  print "Nombre del nodo:\n";
  $nombre = <STDIN>;
  chop($nombre);
  print "¿Tiene contenido?(s/n): ";
  if (<STDIN> =~ /s/) {
    print "Contenido:\n";
    $contenido = <STDIN>;
    chop($contenido);
  }
  $_[0] = $_[0]."<".$nombre.">".$contenido."</".$nombre.">\n";
}

my $server = XML::RPC->new(XMLRPC);
my $result = $server->call("describeCollection", "/db" );
$result = $server->call("createCollection", "/db/ejercicio35");
$result = $server->call("describeCollection", "/db/ejercicio35" );

my $xml;
my $numero;

print "------------------------\n";
print "Creación de ficheros XML\n";
print "------------------------\n";
print "Por favor, introduzca el nodo raíz\n";
my $root = <STDIN>;
chop($root);
$xml = "<".$root.">\n";
print "¿Cuántos nodos intermedios quiere?\n";
my $comprueba = 1;
while ($comprueba) {
  $numero = <STDIN>;
  chop($numero);
  if ($numero =~ /\d/) {
    $comprueba = 0;
  } else {
      print "Introduce -un número-, obviamente no puede haber $numero entradas :)\n";
    }
}

for (my $i = 0; $i<$numero; $i++) {
  crea_nodo($xml);
}

$xml = $xml."</".$root.">";

print "Creando...\n";
$result = $server->call("parse", $xml, "/db/ejercicio35/mixml" );
print "Puede ver el resultado en http://localhost:8080/exist/rest/ejercicio35/mixml\n";
